int (*memory_adjust_reservation) (struct domain *d1, struct domain *d2);
int (*memory_stat_reservation) (struct domain *d1, struct domain *d2);
int (*memory_pin_page) (struct domain *d, struct page_info *page);
- int (*update_va_mapping) (struct domain *d, l1_pgentry_t pte);
int (*console_io) (struct domain *d, int cmd);
int (*domain_memory_map) (struct domain *d);
int (*mmu_normal_update) (struct domain *d, intpte_t fpte);
int (*mmu_machphys_update) (struct domain *d, unsigned long mfn);
+ int (*update_va_mapping) (struct domain *d, l1_pgentry_t pte);
int (*add_to_physmap) (struct domain *d1, struct domain *d2);
#endif
};
return xsm_call(memory_pin_page(d, page));
}
-static inline int xsm_update_va_mapping(struct domain *d, l1_pgentry_t pte)
-{
- return xsm_call(update_va_mapping(d, pte));
-}
-
static inline int xsm_console_io (struct domain *d, int cmd)
{
return xsm_call(console_io(d, cmd));
return xsm_call(mmu_machphys_update(d, mfn));
}
+static inline int xsm_update_va_mapping(struct domain *d, l1_pgentry_t pte)
+{
+ return xsm_call(update_va_mapping(d, pte));
+}
+
static inline int xsm_add_to_physmap(struct domain *d1, struct domain *d2)
{
return xsm_call(add_to_physmap(d1, d2));
return 0;
}
-static int dummy_update_va_mapping (struct domain *d, l1_pgentry_t pte)
-{
- return 0;
-}
-
static int dummy_console_io (struct domain *d, int cmd)
{
return 0;
return 0;
}
+static int dummy_update_va_mapping (struct domain *d, l1_pgentry_t pte)
+{
+ return 0;
+}
+
static int dummy_add_to_physmap (struct domain *d1, struct domain *d2)
{
return 0;
set_to_dummy_if_null(ops, memory_adjust_reservation);
set_to_dummy_if_null(ops, memory_stat_reservation);
set_to_dummy_if_null(ops, memory_pin_page);
- set_to_dummy_if_null(ops, update_va_mapping);
set_to_dummy_if_null(ops, console_io);
set_to_dummy_if_null(ops, domain_memory_map);
set_to_dummy_if_null(ops, mmu_normal_update);
set_to_dummy_if_null(ops, mmu_machphys_update);
+ set_to_dummy_if_null(ops, update_va_mapping);
set_to_dummy_if_null(ops, add_to_physmap);
#endif
}
*/
#define FOREIGNDOM (this_cpu(percpu_mm_info).foreign ?: current->domain)
-static int flask_update_va_mapping(struct domain *d, l1_pgentry_t pte)
-{
- int rc = 0;
- u32 psid;
- u32 map_perms = MMU__MAP_READ;
- unsigned long mfn;
- struct domain_security_struct *dsec;
-
- dsec = d->ssid;
-
- mfn = gmfn_to_mfn(FOREIGNDOM, l1e_get_pfn(pte));
- rc = get_mfn_sid(mfn, &psid);
- if ( rc )
- return rc;
-
- if ( l1e_get_flags(pte) & _PAGE_RW )
- map_perms |= MMU__MAP_WRITE;
-
- return avc_has_perm(dsec->sid, psid, SECCLASS_MMU, map_perms, NULL);
-}
-
static int flask_console_io(struct domain *d, int cmd)
{
u32 perm;
return avc_has_perm(dsec->sid, psid, SECCLASS_MMU, MMU__UPDATEMP, NULL);
}
+static int flask_update_va_mapping(struct domain *d, l1_pgentry_t pte)
+{
+ int rc = 0;
+ u32 psid;
+ u32 map_perms = MMU__MAP_READ;
+ unsigned long mfn;
+ struct domain_security_struct *dsec;
+
+ dsec = d->ssid;
+
+ mfn = gmfn_to_mfn(FOREIGNDOM, l1e_get_pfn(pte));
+ rc = get_mfn_sid(mfn, &psid);
+ if ( rc )
+ return rc;
+
+ if ( l1e_get_flags(pte) & _PAGE_RW )
+ map_perms |= MMU__MAP_WRITE;
+
+ return avc_has_perm(dsec->sid, psid, SECCLASS_MMU, map_perms, NULL);
+}
+
static int flask_add_to_physmap(struct domain *d1, struct domain *d2)
{
return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__PHYSMAP);
.memory_adjust_reservation = flask_memory_adjust_reservation,
.memory_stat_reservation = flask_memory_stat_reservation,
.memory_pin_page = flask_memory_pin_page,
- .update_va_mapping = flask_update_va_mapping,
.console_io = flask_console_io,
.domain_memory_map = flask_domain_memory_map,
.mmu_normal_update = flask_mmu_normal_update,
.mmu_machphys_update = flask_mmu_machphys_update,
+ .update_va_mapping = flask_update_va_mapping,
.add_to_physmap = flask_add_to_physmap,
#endif
};